home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Support Library
/
RoseWare - Network Support Library.iso
/
apidev
/
nodlst.arc
/
IPX.H
next >
Wrap
Text File
|
1989-12-15
|
6KB
|
150 lines
/* */
/* IPX.H - Header file with structure definitions for IPX/SPX*/
/* */
#define MAX_NODES 80
#define TEMPORARY (BYTE)0
#define PERMANENT (BYTE)0xFF
#define OKAY 0
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long LONG;
typedef struct
{
BYTE Network[4]; /* high-low */
BYTE Node[6]; /* high-low */
BYTE Socket[2]; /* high-low */
} IPXAddress;
typedef struct IPXPacketStructure
{
WORD PacketCheckSum; /* high-low */
WORD PacketLength; /* high-low */
BYTE PacketTransportControl;
BYTE PacketType;
IPXAddress Destination;
IPXAddress Source;
} IPXPacket;
typedef struct IPXConfigRequestStructure
{
IPXPacket IPX;
BYTE ExclusionCount;
BYTE ExclusionAddress[MAX_NODES][6];
} IPXConfigRequest;
typedef struct IPXConfigReplyStructure
{
IPXPacket IPX;
BYTE MajorVersion;
BYTE MinorVersion;
WORD SPXDiagnosticSocket;
BYTE ComponentCount;
BYTE ComponentType[100];
} IPXConfigReply;
structECBFragment
{
WORD Address[2]; /* offset-segment */
WORD Size; /* low-high */
};
typedef struct ECBStructure
{
WORD Link[2]; /* offset-segment */
BYTE far *ESRAddress; /* offset-segment */
BYTE InUseFlag;
BYTE CompletionCode;
WORD ECBSocket; /* high-low */
BYTE IPXWorkspace[4]; /* N/A */
BYTE DriverWorkspace[12];/* N/A */
BYTE ImmediateAddress[6];/* high-low */
WORD FragmentCount; /* low-high */
struct ECBFragment FragmentDescriptor;
} ECB;
typedef struct SPXPacketStructure
{
WORD PacketCheckSum; /* high-low */
WORD PacketLength; /* high-low */
BYTE PacketTransportControl;
BYTE PacketType;
IPXAddress Destination;
IPXAddress Source;
BYTE ConnectionControl;
BYTE DataStreamType;
WORD SourceConnectionID; /* high-low */
WORD DestinationConnectionID;/* high-low */
WORD SequenceNumber; /* high-low */
WORD AcknowledgeNumber; /* high-low */
WORD AllocationNumber; /* high-low */
} SPXHeader;
typedef struct SPXShellReplyStructure
{
SPXHeader SPX;
BYTE CompletionCode;
LONG IntervalMarker; /* low-high */
BYTE Reserved[4];
BYTE NodeAddress[6];
BYTE Reserved2;
BYTE NodeAddressType;
WORD MaxDataSize; /* low-high */
BYTE Reserved3[2];
BYTE LANHardwareID;
WORD TransportTime; /* low-high */
BYTE Reserved4[9];
BYTE EthernetType[2];
BYTE MajorVersion;
BYTE MinorVersion;
BYTE MiscFlags;
BYTE SelectedConfiguration;
BYTE LANDescription[80];
WORD IOAddress1; /* low-high */
WORD DecodeRange1a; /* low-high */
WORD IOAddress2; /* low-high */
WORD DecodeRange2a; /* low-high */
BYTE MemoryAddress1[3];
WORD DecodeRange1b; /* low-high */
BYTE MemoryAddress2[3];
WORD DecodeRange2b; /* low-high */
BYTE InterruptIsUsed1;
BYTE InterruptLine1;
BYTE InterruptIsUsed2;
BYTE InterruptLine2;
BYTE DMAIsUsed1;
BYTE DMALine1;
BYTE DMAIsUsed2;
BYTE DMALine2;
BYTE MicroChannelFlags;
BYTE Reserved5;
BYTE TextDescription[80];
} SPXDriverReply;
typedef struct SPXInfoRequestStructure
{
SPXHeader SPX;
BYTE ComponentPosition;
BYTE RequestNumber;
BYTE BridgeDriver;
} SPXInfoRequest;
/* IPX/SPX Assembly Library prototypes */
extern int IPXInitialize( void );
extern int IPXOpenSocket(BYTE *socketNumber, BYTE socketType);
extern void IPXCloseSocket(WORD socketNumber);
extern int IPXGetLocalTarget(BYTE *networkAddress,BYTE *immediateAddress,WORD
*transportTime);
extern void IPXSendPacket(ECB *eventControlBlock);
extern int IPXListenForPacket(ECB *eventControlBlock);
extern void IPXRelinquishControl(void);
extern unsigned int IPXGetIntervalMarker(void);
extern int SPXEstablishConnection( BYTE RetryCount, BYTE Watchdog, WORD *connectionID,
ECB *ECBptr );
extern void SPXListenForSequencedPacket( ECB *ECBptr );
extern void SPXSendSequencedPacket( WORD ConnectionID, ECB *ECBptr );
extern void SPXTerminateConnection( WORD ConnectionID, ECB *ECBptr );